using TerritoryGame.Domain.DomainEvents;
using TerritoryGame.Domain.Interfaces;
using TerritoryGame.Application.Interfaces;
using TerritoryGame.Domain.Entities.App;

namespace TerritoryGame.Application.Services;

/// <summary>
/// 用户创建事件处理器
/// </summary>
public class UserCreatedEventHandler : IDomainEventHandler<UserCreatedEvent>
{
    private readonly IAppLogService _logService;

    public UserCreatedEventHandler(IAppLogService logService)
    {
        _logService = logService;
    }

    public Task HandleAsync(UserCreatedEvent @event)
    {
        try
        {
            Console.WriteLine($"处理用户创建事件: 用户ID={@event.User.Id}, 用户名={@event.User.Username}, 创建者={@event.CreatedBy}, 客户端类型={@event.ClientType}");

            // 记录用户创建日志
            _logService.LogBusinessOperation(
                "USER_CREATED",
                @event.User.Id.ToString(),
                $"用户 {@event.User.Username} 被 {@event.CreatedBy} 创建，客户端类型: {@event.ClientType}"
            );

            // 发送欢迎邮件（如果需要）
            // await SendWelcomeEmailAsync(@event.User);

            // 记录系统日志
            Console.WriteLine($"用户 {@event.User.Username} 创建成功，事件处理完成");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"处理用户创建事件时发生错误: {ex.Message}");
            _logService.LogError($"处理用户创建事件时发生错误: {ex.Message}", ex);
            // 不重新抛出异常，避免影响主流程
        }

        return Task.CompletedTask;
    }
}
